// Object.defineProperty() 方法会直接在一个对象上定义一个新属性，或者修改一个对象的现有属性，并返回此对象。

const obj = {
  a: 3,
  b: 4,
  c: {
    x: 10,
  },
  d: [1, 2],
};

/*
里面要传入三个参数
  obj
    要定义属性的对象。
  prop
    要定义或修改的属性的名称或 Symbol 。
  descriptor
    要定义或修改的属性描述符。
*/

// let str;
Object.defineProperty(obj, "d", {
  // 当我们去访问这个对象的该属性的时候，就会调用get方法
  // get方法是需要return的
  get() {
    console.log("get");
    // return str;
  },
  // 当我们去修改这个对象的该属性的时候，就会调用set方法
  // set方法可以接受一个参数，就是想改成的值
  set() {
    console.log("set");
    // str = val;
    // 重新渲染页面
  },
});

// obj.a = 5;
// console.log(obj.a);

// obj.d.push(3);
